Bom, hoje vou falar sobre o 
Google Agenda. Acho que muitas pessoas usam e a grande maioria pelo menos já ouviu falar sobre essa maravilha do Google.
Como muitas empresas utilizam esta agenda, porque ela permite ter compartilhamento de compromissos, eventos e etc. Então, vou mostrar como atualizar sua agenda usando cURL.
Mas antes de começar, vamos precisar baixar duas classes e tratar o formulário para envio.
1º- Vamos baixar as classes:
As duas classes foram encontradas no site abaixo, muito bom por sinal:
    
2º- Vamos tratar o formulário de cadastro de compromissos:
Usando o 
jQuery Datepicker para ajudar na visualização do calendário.
Usar uma função em JavaScript para tratar o horário de forma correta.
3º- Criando o Formulário:
	<form action="modulos/agenda/scripts/s_cadastrar.php" method="post">
	  <table border="0" cellspacing="0" cellpadding="0">
	  <tr>
		<td>Nome do Evento</td>
		<td><input type="text" name="agenda_evento"></td>
	  </tr>
	  <tr>
		<td>Descrição</td>
		<td><textarea name="agenda_descricao"></textarea></td>
	  </tr>
	  <tr>
		<td>Local</td>
		<td><input type="text" name="agenda_local"></td>
	  </tr>
	  <tr>
		<td>Data Inicial</td>
		<td><input type="text" name="agenda_d_inicial" class="campo_data"></td>
	  </tr>
	  <tr>
		<td>Data Final</td>
		<td><input type="text" name="agenda_d_final" class="campo_data"></td>
	  </tr>
	  <tr>
		<td>Horário Inicial</td>
		<td><input type="text" name="agenda_h_inicial" class="mask-hora" maxlength="5" onkeypress="MascaraHora(this);" /></td>
	  </tr>
	  <tr>
		<td>Horário Final</td>
		<td><input type="text" name="agenda_h_final" class="mask-hora" maxlength="5" onkeypress="MascaraHora(this);" /></td>
	  </tr>
	  <tr>
		<td></td>
		<td><input type="submit" value="Enviar" class="enviar"></td>
	  </tr>
	</table>
	</form>
4º- Montando o HTML completo:
	<!DOCTYPE HTML>
	<html>
	<head>
	<meta charset="utf-8">
	<title>Agendda Google - Renan Martins Pimentel</title>
	<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
	<!-- Date picker -->
	<link type="text/css" href="js/jquery_datepicker/core.css" rel="stylesheet" media="screen">
	<link type="text/css" href="js/jquery_datepicker/datepicker.css" rel="stylesheet"  media="screen">
	<link type="text/css" href="js/jquery_datepicker/theme.css" rel="stylesheet" media="screen">
	<script type="text/javascript" src="js/jquery_datepicker/datepicker.js"></script>
	<script type="text/javascript" src="js/jquery_datepicker/datepicker-pt-BR.js"></script>
	<script type="text/javascript">
	//-- Função para exibir calendarios nos campos data jquery do botao de gerar relatorio --//
	$(function(){
		$(".campo_data").datepicker($.datepicker.regional['pt-BR']);
	});
	<!-- /Date picker -->
	/* Mascara para horario */
	function MascaraHora(objeto){ 
		if(objeto.value.length == 2)
		  objeto.value = objeto.value + ':';
		if(objeto.value.length == 4)
		 objeto.value = objeto.value;
	}
	</script>
	</head>
	<body>
	<form action="s_cadastrar.php" method="post">
	  <table border="0" cellspacing="0" cellpadding="0">
	  <tr>
		<td>Nome do Evento</td>
		<td><input type="text" name="agenda_evento"></td>
	  </tr>
	  <tr>
		<td>Descrição</td>
		<td><textarea name="agenda_descricao"></textarea></td>
	  </tr>
	  <tr>
		<td>Local</td>
		<td><input type="text" name="agenda_local" /></td>
	  </tr>
	  <tr>
		<td>Data Inicial</td>
		<td><input type="text" name="agenda_d_inicial" /></td>
	  </tr>
	  <tr>
		<td>Data Final</td>
		<td><input type="text" name="agenda_d_final" /></td>
	  </tr>
	  <tr>
		<td>Horário Inicial</td>
		<td><input type="text" name="agenda_h_inicial" maxlength="5" onkeypress="MascaraHora(this);" /></td>
	  </tr>
	  <tr>
		<td>Horário Final</td>
		<td><input type="text" name="agenda_h_final" maxlength="5" onkeypress="MascaraHora(this);" /></td>
	  </tr>
	  <tr>
		<td></td>
		<td><input type="submit" value="Enviar" class="enviar"></td>
	  </tr>
	</table>
	</form>
	</body>
	</html>
5º- Script para envio:
<?php
	include ('GoogleCalendarWrapper.php'); 
	$gc = new GoogleCalendarWrapper("seuemail@gmail.com", "suasenha"); 
	//$gc->feed_url = "http://www.google.com/calendar/feeds/untiuro1rs%40group.calendar.google.com/private-6a7151779f99b/basic"; 
	//specify this, if you want to work with not-default calendar (check this: http://code.google.com/apis/gdata/calendar.html#get_feed) 
	//Função para tratar data que vem com padrão PT-BR pelo jQuery
	function formatar_data_contrario($d)
	{
		$d1 = explode("/", $d);		
		return  $d1[2]."-".$d1[1]."-".$d1[0];
	}
	// Receber os dados via POST
	$titulo		 = $_POST['agenda_evento'];
	$conteudo	 = $_POST['agenda_descricao'];
	$local		 = $_POST['agenda_local'];
	$dia_inicio	 = formatar_data_contrario($_POST['agenda_d_inicial']);
	$dia_fim	 = formatar_data_contrario($_POST['agenda_d_final']);
	$hora_inicio = $_POST['agenda_h_inicial'].":00";
	$hora_fim	 = $_POST['agenda_h_final'].":00";
	$s = array(); 
	$s["title"]		= "$titulo"; 
	$s["content"]	= "$conteudo"; 
	$s["where"]		= "$local"; 
	$s["startDay"]	= "$dia_inicio"; 
	$s["startTime"] = "$hora_inicio"; 
	$s["endDay"]	= "$dia_fim"; 
	$s["endTime"]	= "$hora_fim"; 
	if($gc->add_event($s)) 
	  echo "Enviado com sucesso!";
	else 
	  echo "Não enviou!";
?>
Lembrando um pouco de Lógica, que um evento não pode terminar antes da data de inicio, e o mesmo serve para o horário.
Em um outro tutorial eu explico como visualizar o Google Agenda dentro do seu sistema. 
Para fazer download dos arquivos usados acima, clique aqui: 
  
 
Abraços e até a próxima!